package com.ophiux.cs.infrastructure.mapper.consultBase;


import com.ophiux.cs.domain.consultBase.model.entity.Dept;
import com.ophiux.cs.domain.consultBase.model.valueobj.DeptParentResult;
import com.ophiux.cs.domain.consultBase.model.valueobj.DeptQueryObj;
import com.ophiux.cs.domain.consultBase.model.valueobj.DeptResult;
import com.ophiux.utils.exception.OphiuxDaoException;

import java.util.List;

public interface DeptMapper {
	/**
	 *根据名称查询科室
	 * @param DEPT_NAME
	 * @return
	 * @throws OphiuxDaoException
	 */
	public Dept findByName(String DEPT_NAME) throws OphiuxDaoException;

	/**
	 * 条件查询科室
	 * @param dept
	 * @return
	 * @throws OphiuxDaoException
	 */
	public List<Dept> selectDept(Dept dept) throws OphiuxDaoException;

	/**
	 * 新增科室
	 * @param dept
	 * @throws OphiuxDaoException
	 */
	public void addDept(Dept dept) throws OphiuxDaoException;

	/**
	 *更新科室
	 * @param dept
	 * @throws OphiuxDaoException
	 */
	public void updateDept(Dept dept) throws OphiuxDaoException;

	/**
	 * 删除科室
	 * @param DEPT_ID
	 * @throws OphiuxDaoException
	 */
	public void deleteDept(String DEPT_ID) throws OphiuxDaoException;

	/**
	 *根据ID查询科室
	 * @param DEPT_ID
	 * @return
	 * @throws OphiuxDaoException
	 */
	public Dept getDeptById(String DEPT_ID) throws OphiuxDaoException;
	/**
	 * 查询一级科室分类
	 * @param dept
	 * @return List<DeptSortsParentResult>
	 */
	public List<DeptParentResult> getParentDept(DeptQueryObj dept) throws OphiuxDaoException;
	/**
	 * 查询一级科室分类
	 * @param dept
	 * @return List<DeptSortsParentResult>
	 */
	public int getParentDeptCount(DeptQueryObj dept) throws OphiuxDaoException;
	/**
	 * 根据父级ID查询科室
	 * @param PARENT_DEPT_ID
	 * @return List<DeptSortsResult>
	 */
	public List<DeptResult> getDeptByParentId(String PARENT_DEPT_ID) throws OphiuxDaoException;

}
